<?php

namespace app\common\logic;

class User extends LogicCore
{
    //获取当前登录用户的ID
    public function _Get_Uid(){

        $_Uid = session(config('auth_key'));
        if(!$_Uid){
            return false;
        }else{
            return $_Uid;
        }
    }
    //获取用户所有信息
    public function _Get_Uinfo($_Uid = false){
        if($_Uid){
            //获取指定ID的用户
            $_Uinfo = db('User')->where(['id'=>$_Uid])->find();
            if(!$_Uinfo){
                return false;
            }else{
                return $_Uinfo;
            }
        }else{
            //获取当前登陆用户
            $_Uid = $this->_Get_Uid();
            if(!$_Uid){
                return false;
            }else{
                return session('uinfo');
            }
        }
    }
    //登陆
    public function _Login($account = '',$password = ''){
        $_Uinfo = db('User')->where(['username|phone|email'=>$account,'password'=>md5($password),'status'=>1])->find();
        if($_Uinfo){
			$GroupID =db('AuthGroupAccess')->where(['uid'=>$_Uinfo['id'],'def'=>1])->value('group_id');
			$GroupTit = '';
			if($GroupID){
				$AuthGroup = db('AuthGroup')->field('id,p_id,title')->select();
				$GroupTit =  getTreeParentedField($AuthGroup,$GroupID,' -> ','title');
			}
			$_Uinfo['role']=$GroupTit;
            session(config('auth_key'),$_Uinfo['id']);
            session('uinfo',$_Uinfo);
			_Action('admin_Publics_login');
            return $_Uinfo;
        }else{
            $this->error='用户不存在或被禁用';
            return false;
        }
    }
    //退出
    public function _Logout(){// 获取登录数据
        $_Res = _Is_Login();
        // 判断当前用户是否登录
        if (!$_Res) {
            // 未登录，返回错误
            $this->error='尚未登录';
			return false;
        } else {
            // 登录状态
            // 清空Session中的缓存
            session(null);
            //清除菜单缓存
            cache('admin_menu_' . $_Res, NULL);
            // 判断登录数据是否存在
            if (_Is_Login()) {
                // 存在证明登录失败，返回错误信息
				$this->error='退出失败';
				return false;
            } else {
				_Action('admin_Publics_logout',['user_id'=>$_Res]);
				return true;
            }
        }
    }
}